home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Tests / Passed / test5.pl < prev    next >
Encoding:
Text File  |  1989-04-14  |  712 b   |  34 lines

  1.  
  2. /* Copyright (C) 1988, 1989 Herve' Touati, Aquarius Project, UC Berkeley */
  3.  
  4. /* qsort without trailing */
  5. main :-
  6.     list1(X),
  7.     qsort(X,Y),
  8.     write(Y).
  9.  
  10. qsort([],[]) :- !.
  11. qsort([A|As], B) :- 
  12.     filter(A, As, Smaller, Greater),
  13.     qsort(Smaller, SmallerSorted),
  14.     qsort(Greater, GreaterSorted),
  15.     append(SmallerSorted, [A|GreaterSorted], B).
  16.  
  17. filter(A,[],[],[]) :- !.
  18. filter(A, [B|Bs], C, Ds) :-
  19.     A > B, !,
  20.     C = [B|Cs],
  21.     filter(A, Bs, Cs, Ds).
  22. filter(A, [B|Bs], Cs, D) :-
  23.     A =< B,
  24.     D = [B|Ds],
  25.     filter(A, Bs, Cs, Ds).
  26.  
  27. append([], X, X) :- !.
  28. append([X|Xs], Y, [X|Zs]) :-
  29.     append(Xs, Y, Zs).
  30.  
  31. list1([3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,3,8,4,0,45,23,98]).
  32.  
  33.  
  34.